// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}

//-------------MAIN---------------
thread "PROJ3" 

:PROJ3_9
wait 0 
if 
0AAB:   file_exists "CLEO\KEYS.INI" 
jf @PROJ3_EE 
if and
0AF0: 19@ = get_int_from_ini_file "CLEO\KEYS.INI" section "FIRE_EXPLODE" key "AIM_KEY" 
0AF0: 20@ = get_int_from_ini_file "CLEO\KEYS.INI" section "FIRE_EXPLODE" key "FIRE_KEY" 
jf @PROJ3_99 
jump @PROJ3_10A 
jump @PROJ3_EE 

:PROJ3_99
0AF1: write_int 54 to_ini_file "CLEO\KEYS.INI" section "FIRE_EXPLODE" key "AIM_KEY" 
0AF1: write_int 55 to_ini_file "CLEO\KEYS.INI" section "FIRE_EXPLODE" key "FIRE_KEY" 

:PROJ3_EE
if 
0AAB:   file_exists "CLEO\KEYS.INI" 
jf @PROJ3_9 

:PROJ3_10A
wait 0 
if 
   Player.Defined($PLAYER_CHAR)
jf @PROJ3_10A 
0AB1: call_scm_func @PROJ3_51C 0  
if or
00E1:   player 0 pressed_key 17 
0AB0:   key_pressed 2 
0AB0:   key_pressed 12@ 
jf @PROJ3_280 
0470: 11@ = actor $PLAYER_ACTOR current_weapon 
if or
  11@ >= 22 
  34 >= 11@ 
jf @PROJ3_280 
if or
   Actor.Animation($PLAYER_ACTOR) == "RIFLE_CROUCHFIRE"
   Actor.Animation($PLAYER_ACTOR) == "RIFLE_FIRE"
   Actor.Animation($PLAYER_ACTOR) == "RIFLE_FIRE_POOR"
jf @PROJ3_1BD 
0AB1: call_scm_func @PROJ3_287 0  
jump @PROJ3_280 

:PROJ3_1BD
if or
   Actor.Animation($PLAYER_ACTOR) == "2guns_crouchfire"
   Actor.Animation($PLAYER_ACTOR) == "Colt45_crouchfire"
   Actor.Animation($PLAYER_ACTOR) == "Colt45_fire"
   Actor.Animation($PLAYER_ACTOR) == "Colt45_fire_2hands"
jf @PROJ3_233 
0AB1: call_scm_func @PROJ3_287 0  
jump @PROJ3_280 

:PROJ3_233
if or
   Actor.Animation($PLAYER_ACTOR) == "UZI_CROUCHFIRE"
   Actor.Animation($PLAYER_ACTOR) == "UZI_FIRE"
   Actor.Animation($PLAYER_ACTOR) == "UZI_FIRE_POOR"
jf @PROJ3_280 
0AB1: call_scm_func @PROJ3_287 0  

:PROJ3_280
jump @PROJ3_10A 

:PROJ3_287
3@ = 0 

:PROJ3_28E
0085: 2@ = 3@ // (int) 
2@ *= 4 
0AC6: 1@ = label @PROJ3_7F6 offset 
005A: 1@ += 2@ // (int) 
0A8D: 5@ = read_memory 1@ size 4 virtual_protect 0 
if 
  5@ == 0 
jf @PROJ3_4FE 
04C4: store_coords_to 16@ 17@ 6@ from_actor $PLAYER_ACTOR with_offset 0.0 1.6 0.6 
4@ = Object.Create(1598, 16@, 17@, 6@)
0750: set_object 4@ visibility 1 
08D2: object 4@ scale_model 0.3 
04D9: object 4@ set_scripted_collision_check 1 
Object.CollisionDetection(4@) = True
0906: set_object 4@ mass_to 30000.0 // float 
0908: set_object 4@ turn_mass_to 30000.0 // float 
7@ = Object.Create(#MISSILE, 16@, 17@, 6@)
069A: attach_object 7@ to_object 4@ with_offset 0.0 0.0 0.0 rotation 0.0 0.0 180.0 
Object.CollisionDetection(7@) = False
097B: play_audio_at_object 4@ event 1157 
if 
03CA:   object 7@ exists 
jf @PROJ3_394 
8@ = Actor.Angle($PLAYER_ACTOR)
Object.Angle(7@) = 8@

:PROJ3_394
068D: get_camera_position_to 21@ 22@ 23@ 
068E: get_camera_target_point_to 30@ 25@ 26@ 
0088: 11@ = 30@ // (float) 
0067: 11@ -= 21@ // (float) 
0088: 12@ = 25@ // (float) 
0067: 12@ -= 22@ // (float) 
0088: 24@ = 26@ // (float) 
0067: 24@ -= 23@ // (float) 
050A: 27@ = distance_between_XYZ 30@ 25@ 26@ and_XYZ 21@ 22@ 23@ 
0071: 11@ /= 27@ // (float) 
0071: 12@ /= 27@ // (float) 
0071: 24@ /= 27@ // (float) 
11@ *= 10.0 
12@ *= 10.0 
24@ *= 60.0 
0087: 30@ = 21@ // (float) 
005D: 30@ += 11@ // (float) 
0087: 25@ = 22@ // (float) 
005D: 25@ += 12@ // (float) 
0087: 26@ = 23@ // (float) 
005D: 26@ += 24@ // (float) 
0604: get_Z_angle_for_point 11@ 12@ store_to 8@ 
02F6: 11@ = sine 8@ // (float) 
02F7: 12@ = cosine 8@ // (float) 
12@ *= 90.0 
11@ *= 90.0 
11@ *= -1.0 
Object.Throw(4@, 11@, 12@, 24@)
33@ = 0 
0AC6: 1@ = label @PROJ3_7F6 offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 1 virtual_protect 0 
0AC6: 1@ = label @PROJ3_86E offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 4@ virtual_protect 0 
0AC6: 1@ = label @PROJ3_8E6 offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 7@ virtual_protect 0 

:PROJ3_4FE
wait 0 
3@ += 1 
  3@ > 0 
jf @PROJ3_28E 
0AB2: ret 0 

:PROJ3_51C
3@ = 0 

:PROJ3_523
0085: 2@ = 3@ // (int) 
2@ *= 4 
0AC6: 1@ = label @PROJ3_7F6 offset 
005A: 1@ += 2@ // (int) 
0A8D: 5@ = read_memory 1@ size 4 virtual_protect 0 
if 
  5@ == 1 
jf @PROJ3_7DC 
0AC6: 1@ = label @PROJ3_86E offset 
005A: 1@ += 2@ // (int) 
0A8D: 4@ = read_memory 1@ size 4 virtual_protect 0 
if 
  4@ > 0 
jf @PROJ3_7DC 
0AC6: 1@ = label @PROJ3_8E6 offset 
005A: 1@ += 2@ // (int) 
0A8D: 7@ = read_memory 1@ size 4 virtual_protect 0 
if 
  7@ > 0 
jf @PROJ3_7DC 
if 
03CA:   object 4@ exists 
jf @PROJ3_73B 
if 
03CA:   object 7@ exists 
jf @PROJ3_5F2 
8@ = Actor.Angle($PLAYER_ACTOR)
Object.Angle(7@) = 8@

:PROJ3_5F2
068D: get_camera_position_to 21@ 22@ 23@ 
068E: get_camera_target_point_to 30@ 25@ 26@ 
0088: 11@ = 30@ // (float) 
0067: 11@ -= 21@ // (float) 
0088: 12@ = 25@ // (float) 
0067: 12@ -= 22@ // (float) 
0088: 24@ = 26@ // (float) 
0067: 24@ -= 23@ // (float) 
050A: 27@ = distance_between_XYZ 30@ 25@ 26@ and_XYZ 21@ 22@ 23@ 
0071: 11@ /= 27@ // (float) 
0071: 12@ /= 27@ // (float) 
0071: 24@ /= 27@ // (float) 
11@ *= 10.0 
12@ *= 10.0 
24@ *= 60.0 
0087: 30@ = 21@ // (float) 
005D: 30@ += 11@ // (float) 
0087: 25@ = 22@ // (float) 
005D: 25@ += 12@ // (float) 
0087: 26@ = 23@ // (float) 
005D: 26@ += 24@ // (float) 
0604: get_Z_angle_for_point 11@ 12@ store_to 8@ 
02F6: 11@ = sine 8@ // (float) 
02F7: 12@ = cosine 8@ // (float) 
12@ *= 90.0 
11@ *= 90.0 
11@ *= -1.0 
Object.ToggleInMovingList(4@) = True
Object.Throw(4@, 11@, 12@, 24@)
095C: create_smoke_at 11@ 12@ 24@ velocity 0.0 0.0 0.0 RGBA 1.0 0.0 0.0 1.0 size 0.9 last_factor 0.0 

:PROJ3_73B
if and
03CA:   object 4@ exists 
03CA:   object 7@ exists 
jf @PROJ3_7DC 
if or
04DA:   has_object 4@ collided 
04E7:   object 4@ in_water 
86BD:   not no_obstacles_between 11@ 12@ 24@ and 11@ 12@ 24@ solid 1 car 1 actor 0 object 1 particle 0 
  33@ > 7000 
jf @PROJ3_7DC 
0400: store_coords_to 16@ 17@ 6@ from_object 4@ with_offset 0.0 0.0 0.0 
020C: create_explosion_with_radius 3 at 16@ 17@ 6@ 
Object.Destroy(4@)
Object.Destroy(7@)
0AC6: 1@ = label @PROJ3_7F6 offset 
005A: 1@ += 2@ // (int) 
0A8C: write_memory 1@ size 4 value 0 virtual_protect 0 

:PROJ3_7DC
3@ += 1 
  3@ > 0 
jf @PROJ3_523 
0AB2: ret 0 

:PROJ3_7F6
hex
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00
end

:PROJ3_86E
hex
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00
end

:PROJ3_8E6
hex
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 00 00
end